/// <summary>
/// This class handles requests from the API and
/// sends them over IPC to the InterProcess class
/// </summary>

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Ipc;

#include "InterProcess.h"

#pragma managed

namespace API
{
	ref class Interact
	{
	private:
		InterProcess ^ m_InterProcess;

	public:
		Interact(System::String ^ name);
		~Interact();

		bool RoketPackIsAvailable();
		bool ApplicationIsInstalled(System::String ^ repository, System::String ^ application);
		bool ComponentIsInstalled(System::String ^ repository, System::String ^ application, System::String ^ component);
		bool ComponentInstall(System::String ^ repository, System::String ^ application, System::String ^ component);
		bool ComponentUpdate(System::String ^ repository, System::String ^ application, System::String ^ component);
		bool ComponentUninstall(System::String ^ repository, System::String ^ application, System::String ^ component);
		bool VersionIsLatest(System::String ^ repository, System::String ^ application, System::String ^ component);
		bool MiscellaneousCallURL(System::String ^ url);
		bool AuthorizedCallURL(System::String ^ url);
	};
}